from celery import Celery

# celery_tasks是一个可以通过Celery执行的异步任务
# 我们把这个包的代码放到哪里都可以执行，但是我们要执行的代码有一定的局限性
# 所以我们需要将工程的setting文件添加到系统中

# 进行Celery允许配置
# 为celery使用django配置文件进行设置
import os
if not os.getenv('DJANGO_SETTINGS_MODULE'):
    os.environ['DJANGO_SETTINGS_MODULE'] = 'mall.settings'

# tasks --> borker --> worker --> result
# Celery的步骤
# 1、先创建Celery
# 创建celery对象
# main是给celery起一个名字，这个名字建议采用脚本路径,也可以不设置
app = Celery('celery_task')

# 2、我们通过celery对象来加载配置文件，这个配置文件其实就是设置broker
# 我们需要通过celery来设置broker，通过加载配置文件来设置
# 参数是 脚本名.文件名
app.config_from_object('celery_tasks.config')

# 我们需要让celery通过tasks自动检测多个任务
# 参数是列表，列表中的每一项需要满足  脚本路径.包名字
app.autodiscover_tasks(['celery_tasks.sms', 'celery_tasks.email', 'celery_tasks.html'])

# worker 执行是通过指令，自动去执行
# 格式：celery -A 脚本路径.celery的实例文件 worker -l info
# 在cd到mall里运行以下代码
# celery -A celery_tasks.main worker -l info
# windows中需要安装  pip install eventlet，执行方法如下
# celery -A celery_tasks.main worker -l info -P eventlet
